/**
 * 2010(c) Copyright Oceansoft Information System Co.,LTD. All rights reserved.
 * <p>
 * Compile: JDK 1.6+
 * <p>
 * 版权所有(C)：江苏欧索软件有限公司
 * <p>
 * 公司名称：江苏欧索软件有限公司
 * <p>
 * 公司地址：中国苏州科技城青山路1号
 * <p>
 * 网址: http://www.oceansoft.com.cn
 * <p>
 * 作者: 090922(陈伟)
 * <p>
 * 文件名: com.oceansoft.mobile.econsole.modules.accident.service.IAccidentService
 * <p>
 * 类产生时间: 2014-08-17 14:39
 * <p>
 * 负责人: 090922(陈伟)
 * <p>
 * Email:javacspring@gmail.com
 * <p>
 * 项目组 : 苏州公安移动门户
 * <p>
 * 部门: 手持技术部
 * <p>
 * <p>
 */
package com.oceansoft.mobile.econsole.modules.accident.service;

import com.oceansoft.mobile.econsole.modules.accident.entity.AccidentInfo;
import com.oceansoft.mobile.econsole.modules.accident.entity.AccidentPhoto;
import com.oceansoft.mobile.econsole.modules.base.entity.Pager;
import com.oceansoft.mobile.econsole.modules.base.entity.Query;
import com.oceansoft.mobile.econsole.modules.base.entity.Result;
import com.oceansoft.mobile.econsole.modules.member.entity.Member;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * 事故基本信息业务操作接口
 *
 * @author chenw
 * @time 2014-08-17 14:39
 */
public interface IAccidentService {

    /**
     * 保存事故图片信息
     *
     * @param accidentPhoto 事故图片信息类
     * @return AccidentPhoto
     */
    AccidentPhoto savePhoto(AccidentPhoto accidentPhoto);

    /**
     * 更新事故图片信息
     *
     * @param photo 新的图片信息类
     */
    int updatePhoto(AccidentPhoto photo);

    /**
     * 统计同类型事故图片数量
     *
     * @param photo 图片信息
     * @return 同类型图片数量
     */
    int countSameTypePic(AccidentPhoto photo);

    /**
     * 分页查询事故主信息列表
     *
     * @param query
     * @return
     */
    public Pager<AccidentInfo> findAccMainByCondition(Query query);

    /**
     * 根据事故ID查询事故明细
     *
     * @param accidentId 事故ID
     * @param hostIP
     * @return
     */
    List<AccidentInfo> findAccInfoByAccId(String accidentId, String hostIP) throws Exception;

    /**
     * 查询事故明细的图片信息
     *
     * @param accidentId
     * @param userId
     * @return
     */
    List<AccidentPhoto> findAccPhoto(String accidentId, String userId, String hostIP) throws Exception;

    /**
     * 处理远程定责
     *
     * @param userId     用户ID
     * @param accidentId 事故流水号
     * @return Result
     */
    Result doProcessRemote(String userId, String accidentId);

    /**
     * 事故理赔中心处理
     *
     * @param accidentInfo 事故信息主体
     * @return Result 处理结果
     */
    Result doProcessOffice(AccidentInfo accidentInfo);

    /**
     * 保存事故基本信息
     *
     * @param request MultipartHttpServletRequest
     * @return Result
     */
    Result saveAccidentBaseInfo(MultipartHttpServletRequest request) throws IOException;

    /**
     * 保存事故图片、地址坐标
     *
     * @param request
     * @return
     */
    Result saveAccidentPhotosPlace(HttpServletRequest request) throws IOException;

    /**
     * 自行协商事故处理
     *
     * @param request 请求上报参数集合
     * @return Result 处理结果
     */
    Result processNegotiate(MultipartHttpServletRequest request) throws IOException;

    Result getUserAccidentHistory(int userId, int pageIndex, String startdate,
                                  String enddate, String cardnum);

    /**
     * 根据事故编号获取保险照片
     *
     * @param userid
     * @param accid
     * @return
     */
    List<AccidentPhoto> getAccidentPhotos(int userid, String accid);

    Result revokeAccidentReport(int userId, String accidentId) throws Exception;

    Map<String, Object> findAccidentInfo(String accidentId);
}
